Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] problema con lista di oggetti
Forum - C# / VB.NET - [VB.NET] problema con lista di oggetti

Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Segnala al moderatore
Postato alle 15:34
Venerdì, 30/09/2011
Questo topic è stato chiuso dal moderatore

allora, ho necessità di creare una lista di label in modo da poterli selezionare e modificare tramite un indice e quindi tramite un ciclo for.
per creare la lista ho usato il seguente codice:
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Dim parola() As String = {"p","a","r","o","l","a"}
  3.     Dim lab As Label
  4.     Dim lista As New List(Of Label)
  5.    
  6.  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  7.         Dim i As Integer
  8.         For i = 0 To parola.Length - 1
  9.             lab = New Label
  10.             lab.Visible = True
  11.             lab.Text = i
  12.             lista.Add(lab)
  13.             Me.Controls.Add(lista(i))
  14.         Next
  15.     End Sub
  16. End Class



il problema è che nel debug viene visualizzato un solo label! ho provato anche a d inizializzarli e a inserirli nel form singolarmente ma ne viene visualizzato uno solo (la posizione non è settata ma ho provato anche a cambiare quella).
è la prima volta che utilizzo le liste e di sicuro ho sbagliato qualcosa...ma cosa?


EDIT: se può essere d'aiuto nella finestra di controllo immediato mi viene fuori:
Eccezione first-chance di tipo 'System.ArgumentOutOfRangeException' in mscorlib.dll

Ultima modifica effettuata da Lafa_96 il 30/09/2011 alle 15:50
PM
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2308
Iscritto: 04/05/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 15:42
Venerdì, 30/09/2011
la posizione della label?

se non dai una posizione ad ogni label le vedi tutte sovrapposte e quindi hai l'impressione che ce ne sia solo una ma invece ci sono tutte.

inserisci una variabile che ad ogni ciclo aumenta X o Y di una decina di pixel
e dopo

label.Location = new Point(x,y)


si ma il testo di ogni label è diverso...quindi si dovrebbero vedere! e poi ci avevo anche già provato! - Lafa_96 - 30/09/11 15:44
Prova magari a fare "Me.Controls.Add(lab)", così passi direttamente la label. Comunque ha ragione anche Thejuster, devi specificare dove posizionare le label che via via aggiungi al form. - Renny - 30/09/11 16:36
non funzione neanche con il passaggio della label...e ho anche settato la posizione - Lafa_96 - 30/09/11 16:53
forse è meglio se posti il codice che utilizzi.. tutta la routine. - Renny - 30/09/11 17:14
Aspe.. ho notato una cosa... tu fai Dim lab As Label nella sub di Load del form, ma poi usi lab nella routine di gestione dell'evento button2 Click. Devi dichiarare anche li, un oggetto Label e poi lo istanzi con costruttore New nel ciclo - Renny - 30/09/11 17:17


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 17:20
Venerdì, 30/09/2011
Se semplicemente scrivi

lab.Location = New Point(0, i * 30)

subito prima della Add, funziona tutto.


P.S. Ha più senso scrivere

Dim parola As String = "parola"

grazie 1000 adesso funziona! p.s.: è per il gioco dell'impiccato quindi mi è più comodo un array per la parola! - Lafa_96 - 30/09/11 17:41
Thejuster ti aveva suggerito più o meno la stessa cosa e hai detto che avevi provato e non andava ... comunque ... - nessuno - 30/09/11 17:55
effettivamente non andava...se provo a inserire coordinate diverse mi si vede solo il primo label con testo 0...questo codice è l'unico che funziona per ora...comunque grazie a tutti, adesso me la vedo io! - Lafa_96 - 30/09/11 19:20
non riesco a posizionarli in orizzontale! è come si si coprissero a vicenda!!! cioè ci sono ma ognuno è coperto dal precedente eccetto il primo ovviamente! suggerimenti? - Lafa_96 - 30/09/11 20:17
Meno male che te la vedevi tu ... per posizionarli in orizzontale devi cambiare il valore 0 con una variabile di cui cambierai il valore come vuoi ... - nessuno - 30/09/11 21:22
no niente avevo già risolto! in pratica ogni label copriva il successivo in orizzontale perchè aveva una larghezza spropositata, per questo non di vedevano! - Lafa_96 - 30/09/11 22:09


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM